﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace Ecommerce.Model
{
    public class Email
    {

        public void EnviaMensagemEmail(string Destinatario, string Assunto, string corpoMsg)
        {
            try
            {
                var client = new SmtpClient("smtp.gmail.com", 587)
                {
                    Credentials = new NetworkCredential("igor.santana@gmail.com", "bahia@25"),
                    EnableSsl = true
                };

                client.Send("no-replay@lojabambozzi.com.br", Destinatario, Assunto, corpoMsg);
            }
            catch (Exception ex)
            {
                string erro = ex.InnerException.ToString();
            }

            //System.Net.Mail.MailMessage objEmail = new System.Net.Mail.MailMessage();
            //objEmail.From = new System.Net.Mail.MailAddress("lojabambozzi@bambozzi.com.br");

            //objEmail.To.Add(Destinatario);
            //objEmail.Bcc.Add("lojabambozzi@bambozzi.com.br");

            //objEmail.Priority = System.Net.Mail.MailPriority.Normal;

            //objEmail.Subject = Assunto;

            //objEmail.Body = corpoMsg;

            //Para evitar problemas de caracteres "estranhos", configuramos o charset para "ISO-8859-1"
            //objEmail.SubjectEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1");
            //objEmail.BodyEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1");

            System.Net.Mail.SmtpClient objSmtp = new System.Net.Mail.SmtpClient();
            objSmtp.Host = "smtp2.locaweb.com.br";

            //try
            //{
            //    objSmtp.Send(objEmail);
            //}
            //catch (Exception ex)
            //{
            //    //TODO: Tratar email
            //}
            ////exclumos o objeto de e-mail da memria
            //objEmail.Dispose();

        }
                

        public void PedidoIncluido(string destinatario, tb_ped_pedido pedido)
        {
            string assunto = "Solicitaca​o de compra efetuada";

            StringBuilder sbCorpo = new StringBuilder();
            sbCorpo.AppendLine("====================================================");
            sbCorpo.AppendLine("SOLICITAÇÃO DE COMPRA EFETUADA");
            sbCorpo.AppendLine("====================================================");
            sbCorpo.AppendLine("Esta e uma mensagem gerada automaticamente, não é necessário responde-la.");
            sbCorpo.AppendLine("Segue abaixo a confirmacao da sua solicitacao de compra.");

            sbCorpo.AppendLine(); sbCorpo.AppendLine();
            sbCorpo.Append("Número do pedido: ");
            sbCorpo.AppendLine(pedido.ped_idt_pedido.ToString());

            sbCorpo.AppendLine(); sbCorpo.AppendLine();
            sbCorpo.AppendLine("====================================================");
            sbCorpo.AppendLine("PAGAMENTO");
            sbCorpo.AppendLine("====================================================");
            sbCorpo.Append("Forma de pagamento: ");
            sbCorpo.AppendLine(pedido.tb_tpa_tipo_pagamento.tpa_des_tipo_pagamento);
            sbCorpo.Append("Valor total: ");
            sbCorpo.AppendLine(pedido.ped_vlr_total_pedido.Value.ToString("c"));

            sbCorpo.AppendLine(); sbCorpo.AppendLine();
            sbCorpo.AppendLine("====================================================");
            sbCorpo.AppendLine("DADOS DA ENTREGA");
            sbCorpo.AppendLine("====================================================");
            var endereco = EnderecoModel.Instance.Obter(pedido.tb_ien_informacao_envio.FirstOrDefault().end_idt_endereco);
            sbCorpo.Append("Endereço: ");
            sbCorpo.Append(endereco.end_nom_logradouro);
            sbCorpo.Append(", ");
            sbCorpo.Append(endereco.end_num_endereco);
            sbCorpo.Append(" ");
            sbCorpo.AppendLine(endereco.end_des_bairro);
            sbCorpo.Append(endereco.end_nom_cidade);
            sbCorpo.Append(" - ");
            sbCorpo.AppendLine(endereco.end_sig_uf);
            sbCorpo.AppendLine(endereco.end_num_cep);

            sbCorpo.AppendLine(); sbCorpo.AppendLine();
            sbCorpo.AppendLine("====================================================");
            sbCorpo.AppendLine("DADOS CADASTRAIS");
            sbCorpo.AppendLine("====================================================");
            var pessoaFisica = PessoaFisicaModel.Instance.Obter(pedido.tb_pes_pessoa.pes_idt_pessoa);
            sbCorpo.Append("Nome do cliente: ");
            sbCorpo.Append(pessoaFisica.pfi_nom_pessoa_fisica);

            sbCorpo.AppendLine();sbCorpo.AppendLine();
            sbCorpo.AppendLine("Para visualizar seus pedidos acesse http://www.lojabambozzi.com.br .");

            EnviaMensagemEmail(destinatario, assunto, sbCorpo.ToString());
        }

        public void TransacaoCartaoCreditoNaoConcluida(string destinatario, tb_ped_pedido pedido)
        {
            string assunto = "Pagamento não efetuado";

            StringBuilder sbCorpo = new StringBuilder();
            sbCorpo.AppendLine("====================================================");
            sbCorpo.AppendLine("SITUAÇÃO PAGAMENTO");
            sbCorpo.AppendLine("====================================================");
            sbCorpo.AppendLine("Esta e uma mensagem gerada automaticamente, não é necessário responde-la.");
            sbCorpo.AppendLine("Segue abaixo a situação de pagamento.");

            sbCorpo.AppendLine(); sbCorpo.AppendLine();
            sbCorpo.Append("Número do pedido: ");
            sbCorpo.AppendLine(pedido.ped_idt_pedido.ToString());

            sbCorpo.AppendLine(); sbCorpo.AppendLine();
            sbCorpo.AppendLine("====================================================");
            sbCorpo.AppendLine("PAGAMENTO");
            sbCorpo.AppendLine("====================================================");
            sbCorpo.Append("Não foi possível realizar a conclusão do seu pedido devido a problemas no pagamento. Favor entrar em contato com a sua operadora de cartão de crédito ou verificar os dados digitados.");

            sbCorpo.AppendLine("Para visualizar seus pedidos acesse http://www.lojabambozzi.com.br .");

            EnviaMensagemEmail(destinatario, assunto, sbCorpo.ToString());
        }

        public void RedefinirSenha(tb_pes_pessoa pessoa)
        {
            string assunto = "Redefinir Senha | Loja Bambozzi";
            string guid = Guid.NewGuid().ToString();
            StringBuilder dados = new StringBuilder();

            dados.Append("guid=" + guid);
            dados.Append("&login=" + pessoa.pes_des_login);

            StringBuilder sbCorpo = new StringBuilder();
            sbCorpo.AppendLine("====================================================");
            sbCorpo.AppendLine("REDEFINIR SENHA");
            sbCorpo.AppendLine("====================================================");
            sbCorpo.AppendLine(); sbCorpo.AppendLine();
            sbCorpo.AppendLine("Recentemente, você pediu uma nova senha. Para redefinir sua senha, clique no link abaixo.");
            sbCorpo.AppendLine();
            sbCorpo.AppendLine("http://www.lojabambozzi.com.br/AlterarSenha.aspx?" + dados.ToString());
            sbCorpo.AppendLine(); sbCorpo.AppendLine();
            sbCorpo.AppendLine("(Se clicar no link não funcionar, tente copiá-lo e colar na barra de endereços em seu navegador.)");
            sbCorpo.AppendLine();
            sbCorpo.AppendLine("Por favor, não feche seu navegador até que a página de senha seja completamente carregada, o que pode levar alguns minutos."); 
            sbCorpo.AppendLine("Caso não tenha pedido para redefinir sua senha, favor desconsiderar esta mensagem.");

            sbCorpo.AppendLine(); sbCorpo.AppendLine();
            sbCorpo.AppendLine("Atenciosamente,");
            sbCorpo.AppendLine("Serviço de Atendimento ao Cliente Bambozzi");

            //Envia a mensagem por email
            EnviaMensagemEmail(pessoa.pes_des_login, assunto, sbCorpo.ToString());

            //Grava os dados da mensagem
            PessoaModel.Instance.InserirAlteracaoSenha(pessoa, guid);
        }

    }
}
